﻿/*
Nombre:                         IMovimientoDao
Descripcion:                    Interfaz que maneja las funciones principales sobre los datos de los movimentos manejados en la capa de persistencia
Dependencias:                 
Fecha de creación:              20081023
Autor:                          VMORALES
Fecha de modifcación:         
Responsable:                  
Num. de modifcación:            1
*/

#region Imports

using Electrocucaracha.AdminPersonal.DAO.Entidades;

#endregion

namespace Electrocucaracha.AdminPersonal.DAO
{
    /// <summary>
    /// Interfaz que maneja las funciones principales sobre los datos de los movimentos manejados en la capa de persistencia
    /// </summary>
    public interface IMovimientoDao : IGenericoDao<MovimientoDTO>
    {
        /// <summary>
        /// Funcion que devuelve todos los movimientos de una cuenta en especifica capturados en la capa de persistencia
        /// </summary>
        /// <param name="cuenta">Cuenta a filtrar</param>
        /// <returns>Conjunto de movimientos</returns>
        MovimientoDTO[] Obtener(CuentaDTO cuenta);

        /// <summary>
        /// Funcion que devuelve todos los movimientos de una categoria en especifica capturados en la capa de persistencia
        /// </summary>
        /// <param name="categoria">Categoria a filtrar</param>
        /// <returns>Conjunto de movimientos</returns>
        MovimientoDTO[] Obtener(CategoriaDTO categoria);

        /// <summary>
        /// Funcion que devuelve todos los movimientos que coinciden con los parametros solicitados
        /// </summary>
        /// <param name="idCuenta">Identificador de la cuenta asociada al movimiento</param>
        /// <param name="descripcion">Descripcion del movimiento</param>
        /// <param name="monto">Monto del movimiento</param>
        /// <returns></returns>
        MovimientoDTO[] Obtener(int idCuenta, string descripcion, decimal monto);

        /// <summary>
        /// Funcion que elimina todos los movimientos de una cuenta en especifica capturados en la capa de persistencia
        /// </summary>
        /// <param name="cuenta">Cuenta a eliminar movimientos</param>
        bool Eliminar(CuentaDTO cuenta);

        /// <summary>
        /// Funcion que elimina todos los movimientos de una categoria en especifica capturados en la capa de persistencia
        /// </summary>
        /// <param name="categoria">Categoria a eliminar movimientos</param>
        bool Eliminar(CategoriaDTO categoria);

    }//IMovimientoDao
}//Electrocucaracha.AdminPersonal.DAO